Don't send crossing events to destroyed windows
authorAlexander Larsson <alexl@redhat.com>
Mon, 2 Feb 2009 11:50:18 +0000 (12:50 +0100)
committerAlexander Larsson <alex@localhost.localdomain>
Thu, 2 Apr 2009 08:15:30 +0000 (10:15 +0200)
gdk/gdkdisplay.c

index 48d79e8542d964fce97fa5e353665eb461194b1d..8b518ad235150420d83b723216b38b5f3ca371fb 100644 (file)
@@ -990,7 +990,8 @@ switch_to_pointer_grab (GdkDisplay *display,
     {
       pointer_window = _gdk_windowing_window_at_pointer (display,  &x, &y, &state);
       if (pointer_window != NULL &&
-         (GDK_WINDOW_TYPE (pointer_window) == GDK_WINDOW_ROOT ||
+         (GDK_WINDOW_DESTROYED (pointer_window) ||
+          GDK_WINDOW_TYPE (pointer_window) == GDK_WINDOW_ROOT ||
           GDK_WINDOW_TYPE (pointer_window) == GDK_WINDOW_FOREIGN))
        pointer_window = NULL;
       
@@ -1006,7 +1007,8 @@ switch_to_pointer_grab (GdkDisplay *display,
        {
          /* Convert to toplevel */
          w = (GdkWindowObject *)pointer_window;
-         while (w->parent->window_type != GDK_WINDOW_ROOT)
+         while (/*w->parent != NULL && */
+                w->parent->window_type != GDK_WINDOW_ROOT)
            {
              x += w->x;
              y += w->y;